package com.example.demo.listener;

import com.example.demo.entity.UserInfo;
import org.springframework.context.ApplicationEvent;

/**
 * 自定义事件
 *
 * 在实际项目中，我们往往需要自定义一些事件和监听器来满足业务场景，比如在微服务中会有这样的场景：微服务 A 在处理完某个逻辑之后，
 * 需要通知微服务 B 去处理另一个逻辑，或者微服务 A 处理完某个逻辑之后，需要将数据同步到微服务
 * B。这种场景非常普遍，这时我们可以自定义事件以及监听器来监听，一旦监听到微服务 A 中的某事件发生，就去通知微服务 B 处理对应的逻辑
 * @author LF
 * @date 2021/4/19 - 10:22
 */
public class MyEvent extends ApplicationEvent {
    private UserInfo user;

    public UserInfo getUser() {
        return user;
    }

    public void setUser(UserInfo user) {
        this.user = user;
    }

    /**
     * 在事件中定义一个 User 对象来模拟数据，构造方法中将 UserInfo 对象传进来初始化
     * @param source
     * @param user
     */
    public MyEvent(Object source, UserInfo user) {
        super(source);
        this.user = user;
    }
}
